Cloud computing is a delivery model where software and information is provided on demand. One of the latest trends in cloud computing is to run desktop software programs, which were not designed for cloud or mobile devices, on remote servers rather than the local user's computer. In this model, the application requested by the user runs on a remote server, and its graphical output is rendered on the user's machine via a remote client or a browser. Such mechanism is provided by Microsoft RemoteApp and Citrix Receiver among others. However, most software programs running in such remote server environments were designed to deal with traditional file system storage. In today's cloud era, storage is often preferred to be stored on cloud storage servers such as those provided by Dropbox, Google Drive and OneDrive. Traditional and legacy software typically cannot directly work with this kind of storage. For this very reason, the above-mentioned storage providers typically provide a client software that runs on desktop computers and creates a special folder (e.g. named “Dropbox”) where traditional software applications can save their files and see them synchronized with the cloud storage. However while this model fits very well personal computers, it is not adapted for remote software execution; it is neither efficient nor safe to install such software and synchronize the entire user's data in remote execution environments where the server is typically at a different location than the user.
When it comes to remote software execution, user storage is one of the shortcomings, and one of the barriers to adoption for this kind of technology, especially in cloud environments. Remote program execution in cloud environments can only be truly useful if users can easily access and modify their own data. For example, using a software such as Photoshop from a distance (remote access client or HTML5 browser) is useless unless you can make it access and modify one's personal files. One additional difficulty in cloud environments is that application sessions may need to be stateless, in which case, typically, storage must not be kept from one session to the next; this may be a requirement both in terms of scalability and server load-balancing. There are different methods for mitigating this problem:
One solution includes duplicating user's data to the remote servers before letting the user's session begin. One example of such technique is known in Microsoft Windows platforms as “roaming profiles”. User's data is copied back and forth between a central server and the machine (or machines) where user's applications are about to run. When the user logs in, his files are copied into the machine where his application is meant to run. However this method is proportionally ineffective as the user's data grows bigger, increasing network traffic between the central server and the execution machine. Additionally, the time necessary for the synchronization can be overwhelming, especially in cloud scenarios where machines can be at different geographical locations.
A variant of this method exists, including synchronizing between cloud storage (e.g. Dropbox, Google Drive and OneDrive) and the execution server. Such technique is used for example by Fra.me (formerly Mainframe2). However it bears the same inconveniences as above. Nowadays, Terabytes of cloud storage is becoming a commodity, and synchronizing an entire user storage between geographical cloud locations is consuming both in terms of network traffic (which in itself bears a cost), and in terms of time spent waiting for the synchronization to happen. Additionally, this method bears considerable security risks. Cloud storage providers assure high security for their users' data; copying this whole data to a cloud execution server then becomes the weakest link in securing the user's data, and increases the attack surface for stealing user data.
Moreover, remote application access products such as Microsoft RemoteApp and Citrix Receiver were conceived for company-internal use, with authentication and strong trust relationship between end-users and their server-provider. They were not designed to safely sessions to anonymous or self-registered users, which is often the model for Internet systems and Websites. In today's cloud computing era where software is often required as a service (SaaS), this can considered a shortcoming.
Last, there is a technology called application virtualization which allows transporting applications from one computer to another as simple files, without having to reinstall them. However this kind of products have not yet been leveraged to maximize remote execution efficiently.